package com.ck.dao;

import com.ck.model.common.ProgramPutin;
import com.ck.model.company.dto.CpProgramPutinDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 节目投放设置
 *
 * @author linqiang
 * @date 2018-06-20 18:25
 */
public interface ProgramPutinMapper {
    /**
     * 根据主键删除投放设置
     *
     * @param programPutinId 投放设置主键
     * @return 影响行数
     */
    int deleteByPrimaryKey(Long programPutinId);

    /**
     * 新增投放设置
     *
     * @param record 新增的投放设置
     * @return 影响行数
     */
    int insert(ProgramPutin record);

    /**
     * 新增投放设置（字段值不为空的）
     *
     * @param record 新增的投放设置
     * @return 影响行数
     */
    int insertSelective(ProgramPutin record);

    /**
     * 根据主键查询单个投放设置
     *
     * @param sceneId 场主键
     * @return 投放设置
     */
    ProgramPutin selectByPrimaryKey(Long sceneId);

    /**
     * 根据主键个更新投放设置（不为空的字段）
     *
     * @param record 更新的投放设置
     * @return 影响行数
     */
    int updateByPrimaryKeySelective(ProgramPutin record);

    /**
     * 根据主键更新投放设置
     *
     * @param record 更新的投放设置
     * @return 影响行数
     */
    int updateByPrimaryKey(ProgramPutin record);


    /**
     * 新增并返回ID
     *
     * @param programPutin 新增的对象
     * @return 影响行数
     */
    int insertAndReturnId(ProgramPutin programPutin);

    /**
     * 根据节目版本号查询节目投放
     *
     * @param programVersion 节目版本号
     * @return ProgramPutin
     */
    ProgramPutin selectByProgramVersion(String programVersion);

    /**
     * 根据节目版本号查询节目投放DTO
     *
     * @param programVersion 节目版本号
     * @return CpProgramPutinDTO
     */
    CpProgramPutinDTO selectByProgramVersionDTO(String programVersion);

    /**
     * 根据投放的终端组码查询节目投放的终端组名称
     *
     * @param deviceGroupCodeList 终端组码数组
     * @param companyCode        商家编码
     * @return 终端组名称（多个逗号隔开）
     */
    String selectDeviceGroupNameByDeviceGroupCode(@Param("deviceGroupCodeList") List<String> deviceGroupCodeList,
                                                  @Param("companyCode") String companyCode);

    void batchDeleteByProgramVersion(String programVersion);
}